package org.lendoo.web.service;

import org.lendoo.web.entity.Category;

import com.github.pagehelper.PageInfo;
import org.lendoo.web.pojo.common.ServiceResult;
import org.lendoo.web.pojo.dto.RelCategoryAndImageUrlListDto;

import java.io.Serializable;
import java.util.List;

/**
 * Category的service接口
 */
public interface CategoryService {

    /**
     * 新增
     * @param category 分类表
     * @return 添加成功返回1，添加失败返回-1
     */
    ServiceResult<Boolean> add(Category category);

    /**
     * 批量导入
     * @param categoryList 分类表（列表）
     * @return 批量导入成功返回1，批量导入失败返回-1
     */
    ServiceResult<Boolean> batchAdd(List<Category> categoryList);

    /**
     * 更新
     * @param category 分类表
     * @return 更新成功返回1，更新失败返回-1
     */
    ServiceResult<Boolean> updateForId(Category category);

    /**
     * 删除
     * @param id 主键
     * @return 删除成功返回1，删除失败返回-1
     */
    ServiceResult<Boolean> deleteById(Serializable id);

    /**
     * 根据id查询
     * @param id 主键
     * @return 返回查询结果
     */
    ServiceResult<Category> selectById(Serializable id);

    /**
     * 根据条件，分页查询，升序/降序排列
     * @param category 分类表
     * @param pageNo 页号
     * @param pageSize 每页行数
     * @return 返回查询结果列表
     */
    ServiceResult<PageInfo<Category>> page(Category category, int pageNo, int pageSize);

    /**
     * 查询所有记录
     * @return
     */
    ServiceResult<List<Category>> findAll();

    /**
     * 返回顶级分类列表
     * @return
     */
    ServiceResult<List<Category>> findTopCategory();

    /**
     * 查找子集分类列表
     * @param parentId
     * @return
     */
    ServiceResult<List<Category>> findSubCategory(Integer parentId);

    /**
     * 根据父级分类的id，查找子集分类列表和对应的图片列表
     * @param parentCategoryId
     * @return
     */
    ServiceResult<List<RelCategoryAndImageUrlListDto>> findSubCategoryListAndImageListByParentCategoryId(Integer parentCategoryId);
}